Security software, such as anti-virus and intrusion detection systems, share a common need to perform pattern matching operations at a high rate of speed. Pattern matching refers to the process of searching for known byte patterns in a stream of data. The byte pattern is typically represented by an array of bytes containing properties describing how the match is performed. Pattern matching is a very CPU intensive process. Existing general-purpose CPUs are not optimized for the pattern matching operations, and even the best algorithms deliver disappointing performance.
In the field of anti-virus software, a common method for virus detection is to identify possible viruses entering the computer by pattern matching for known virus signatures in the incoming data stream. Since 1980, the number of known virus signatures has grown to well over 10,000, and continues to grow every year.
In view of the foregoing, there is a need for systems and methods that allow for fast and efficient pattern matching.